home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Full / Paragon Drive Backup 9 / DB90_SE_x64.msi / Data1.cab / _7E6D093A3151F7DDB717CD6605B70E5B < prev    next >
Text File  |  2008-06-28  |  4KB  |  176 lines

  1. /*
  2. Script does new incrementals till there is enough space.
  3. Then deletes the oldest incremental.
  4. */
  5.  
  6. set value ndisk = 1        // source disk number
  7. set value npart = 1        // source partition number
  8. set string pathb = "e:/img.pbf"    // Basic backup image
  9. set string pathi = "e:/incremental"    // Subfolder with incrementals
  10.  
  11. confirm off
  12. if (not(fileexist(string(pathb))))               // Checking for basic backup image
  13. then
  14.    print "Basic image isn't found"
  15.    print ""
  16.    print "Exiting"
  17.    print ""
  18.    exit(1)
  19. endif
  20.  
  21. set value crtime = nowtime
  22. set string funame = "img" + stringdec(value(crtime)) + ".pbf"
  23.  
  24. base = string(pathb)                // Estimating
  25. img = string(pathi)+"/"+string(funame)
  26. unselect all
  27. select disk value(ndisk)
  28. select partition value(npart)
  29. options
  30.    cmp = 1
  31.    label = "Incremental backup"
  32.    base_pwd = ""
  33.    autonames
  34.    estimation (2,tnow)
  35. store
  36. printdec value(tnow)/1024
  37. print " Mb required for incremental backup file"
  38. print ""
  39. for all disks
  40.         for all partitions
  41.                 if (mount(curdisk, curpartition) == substring(string(pathi),0,1))
  42.                 then
  43.                         set variable "tpartition"
  44.                 endif
  45.         endfor
  46. endfor
  47. select partition variable "tpartition"
  48. print stringdec(sizefree(curdisk, curpartition)/1024) +" Mb available"
  49. print ""
  50. set value fsize = value(tnow) - sizefree(curdisk, curpartition)
  51. if (value(fsize) > 0)
  52.  then
  53.   goto free_sp
  54.  endif
  55.                     // Saving incremental
  56. star:
  57. base = string(pathb)
  58. img = string(pathi)+"/"+string(funame)
  59. unselect all
  60. select disk value(ndisk)
  61. select partition value(npart)
  62.  
  63. options
  64.    cmp = 1
  65.    label = "Incremental backup"
  66.    base_pwd = ""
  67.    autonames
  68. store
  69. call check_err
  70. apply all
  71. call check_err
  72. print "Backup is successful: File " + string(funame) + " created."
  73. print ""
  74. goto out
  75.  
  76. free_sp:                         // Deleting the oldest incremental
  77. print "Deleting old incremental..."
  78. print ""
  79. once_again:
  80. set string dname = ""
  81. set string fname = ""
  82. set value oldest = 2999999999
  83. set value a = 0
  84. set value b = dircontents(string(pathi))
  85. if (value(b)==0)
  86. then
  87.  goto pipka 
  88. endif
  89.  ark:
  90.  set string fname = direlement(string(pathi),value(a))
  91.  
  92.  if ( stringlength(string(fname)) != 17 or stringsnotequal(substring(string(fname),0,3),"img") or stringsnotequal(substring(string(fname),13,4),".pbf") )
  93.  then
  94.   if (stringsnotequal(substring(string(fname),13,4),".pfm"))
  95.    then
  96.     print "Alien file '"+ string(fname) +"' in the folder !"
  97.     print ""
  98.    endif
  99.   goto hohma
  100.  endif
  101.  
  102.  set string tstr = substring(string(fname),3,10)        //Looking for the oldest
  103.  call ss
  104.  if (value(tnew)<value(oldest))
  105.   then
  106.    set string dname = string(fname)
  107.    set value oldest = value(tnew)
  108.   endif
  109.  
  110. hohma:
  111. set value a = value(a) + 1
  112. if (value(a)<value(b))
  113. then
  114.  goto ark
  115. endif
  116.  
  117. pipka:
  118. if (value(oldest)==2999999999)            //If we didn't find any incrementals to delete
  119.  then
  120.    print "Sorry, but there is nothing to delete."
  121.    print ""
  122.    exit(2)
  123.  endif
  124. print string(dname)
  125. print " will be deleted"
  126. print ""
  127.  
  128. set value fsize = value(fsize) - filesize(string(pathi)+"/"+string(dname))
  129.  
  130. filedelete(string(pathi)+"/"+string(dname))            //Deleting incremental and its .pfm
  131. filedelete(string(pathi)+"/img"+stringdec(value(oldest))+".pfm")
  132.  
  133. if (value(fsize) > 0)
  134.  then
  135.   goto once_again
  136.  endif
  137. goto star
  138.                         // Checking for errors procedure
  139.  
  140. check_err:
  141.  if (errorcode(1) != 0)
  142.     then
  143.    print "Some error occured: "
  144.    strerror(errorcode(1))
  145.    print ""
  146.    print "Exiting"
  147.    print ""
  148. if (fileexist(string(pathi)+"/"+string(funame)))
  149.  then
  150.    filedelete(string(pathi)+"/"+string(funame))
  151.  endif
  152.    exit(errorcode(1))
  153.     endif
  154. endcall
  155.  
  156.                     // Procedure for converting string into decimal number
  157. // tstr - string, tnew - number.
  158. ss:
  159. set value tnew = 0
  160. set value len = stringlength(string(tstr))
  161. set value z = 1
  162. d:
  163. set value len = value(len) - 1
  164. set value tnew = value(tnew) + ( (chartocode(substring(string(tstr),value(len),1))-48))*value(z)
  165. set value z = value(z)*10
  166. if (value(len)>0)
  167. then
  168. goto d
  169. endif
  170. endcall
  171.  
  172. out:
  173.     print "************************************** ALL IS OK **************************"
  174.     print ""
  175.     exit(0)
  176.